package com.osdp.uc.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.osdp.common.constant.CommonConstant;
import com.osdp.common.entity.BaseEntity;
import com.osdp.common.util.PasswordUtil;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.StringUtils;

import java.util.Date;
import java.util.List;

@Data
@TableName("uc_user")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class UcUser extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 登录账号
     */
    private String userName;

    /**
     * 真实姓名
     */
    private String realName;

    /**
     * 密码
     */
    private String passWord;

    /**
     * md5密码盐
     */
    private String salt;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 生日
     */
    private Date birthday;

    /**
     * 性别（1：男 2：女,0未知）
     */
    private String gender;

    /**
     * 电子邮件
     */
    private String email;

    /**
     * 电话，
     */
    private String phone;

    /** 入职日期 */
    private Date entryDate;

    /** 离职日期 */
    private Date leaveDate;

    /**家庭地址*/
    private String familyAddr;
    /**工作电话*/
    private String workTel;
    /**工作地址*/
    private String workAddr;

    /**
     * 状态(1：正常 0：无效 ）
     */
    private String validation;

    /**
     * 同步工作流引擎1同步0不同步
     */
//    private String activitiSync;
    /** 是否部门负责人 */
    private String isPriorityDepart;
    /**
     * 主部门id
     */
    private String priorityDepartId;

    /**
     * "删除状态（0，正常，1已删除）"
     */
//    private Integer delFlag;
    /**
     * 设置加密密码
     *
     * @param password 明文密码
     */
    public void encryptPassword(String password){
        String passwordEncode = PasswordUtil.encrypt(userName, password, salt);
        this.passWord = passwordEncode;
    }

    @TableField(exist = false)
    public List<UcUserPosition> ucUserPositionList;

    /**
     * 判断是否删除
     * 删除状态（0，正常，1已删除）
     * @return
     */
//    public boolean deleted() {
//        return delFlag == CommonConstant.FLAG_ONE_1;
//    }

    /**
     * 判断加密密码是否一致
     *
     * @param password 明文密码
     * @return
     */
    public boolean equalsEncryptPassword(String password) {
        String encodePassword = PasswordUtil.encrypt(userName, password, salt);
        return StringUtils.equals(password, encodePassword);
    }

    public UcUser(){super();}

    public UcUser(String userName, String realName, String gender, Date birthday, String phone, String validation) {
        this.userName = userName;
        this.realName = realName;
        this.gender = gender;
        this.birthday = birthday;
        this.phone = phone;
        this.validation = validation;
    }
}
/**
 ALTER TABLE foss.uc_user ADD is_priority_depart varchar(2) NULL COMMENT '是否部门负责人';
 */